﻿using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZP.Common;
using ZP.DTO.fz_sys_menu;
using ZP.IBLL;
using ZP.IDAL;
using ZP.Model;

namespace ZP.BLL
{
    public partial class fz_sys_menuService : BaseService<fz_sys_menu, int>, Ifz_sys_menuService
    {
        //public fz_sys_menuService(Ifz_sys_menuDAL _fz_sys_menuDAL, Ifz_sys_roleDAL _fz_sys_roleDAL)
        //{
        //    this._fz_sys_menuDAL = _fz_sys_menuDAL;
        //    this._fz_sys_roleDAL = _fz_sys_roleDAL;

        //    this._repository = _fz_sys_menuDAL;
        //}

        /// <summary>
        /// 获得所有的菜单信息
        /// </summary>
        /// <returns></returns>
        public List<fz_sys_menuResultDTO> GetSysMenu()
        {
            List<fz_sys_menuResultDTO> result = null;
            var pp = _repository.GetModels(p => p.state == ZPFlagType.YES && p.id > 0).OrderBy(m => m.id);                     //v.3
            result = Mapper.Map<List<fz_sys_menu>, List<fz_sys_menuResultDTO>>(pp.ToList());
            return result;
        }

        /// <summary>
        /// 根据用户获得菜单集合
        /// </summary>
        /// <param name="roleId"></param>
        public List<fz_sys_menuResultDTO> GetSysMenuByRoleId(int? roleId, List<int> menuIds)
        {
            List<fz_sys_menuResultDTO> result = new List<fz_sys_menuResultDTO>();
            if (roleId.HasValue)
            {
                List<fz_sys_menu> sysMenu = null;
                if (roleId == 1)
                {
                    //超级管理员获得所有
                    sysMenu = _repository.GetModels(p => p.state == ZPFlagType.YES).OrderBy(m => m.id).ToList();
                }
                else
                {
                    //old
                    //string menuIds = _fz_sys_roleDAL.GetModels(p => p.id == roleId).FirstOrDefault().menuIds;
                    //if (!string.IsNullOrWhiteSpace(menuIds))
                    //{
                    //    List<int> menuIdList = menuIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(Int32.Parse).ToList();
                    //    sysMenu = _repository.GetModels(p => menuIdList.Contains((int)p.id)).OrderBy(m => m.id).ToList();
                    //}

                    //new
                    sysMenu = _repository.GetModels(p => menuIds.Contains(p.id)).OrderBy(m => m.id).ToList();
                }
                result = Mapper.Map<List<fz_sys_menu>, List<fz_sys_menuResultDTO>>(sysMenu);
            }
            return result;
        }


    }
}
